<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 一、箭头函数的使用 
        // 1. 可以把普通函数改成箭头函数

        // 匿名函数
        // fn1();
        // var fn1 = function(){
        //     console.log("fn1")
        // }
       
        // var fn1 = ()=>{
        //     console.log("fn1")
        // }
        // fn1();
       
        // 命名函数 
        // function fn2(){
        //     console.log("fn2")
        // }
        // fn2();


        // 2.箭头函数传参 

        // 多个参数的情况
        // var fn = function(a,b){
        //     console.log(a,b);
        // }

        // var fn = (a,b)=>{
        //     console.log(a,b);
        // }
        // fn(1,2);

        // 一个参数 可以省略参数的小括号
        // var fn = function(a){
        //     console.log(a);
        // }

        // var fn = a=>{
        //     console.log(a)
        // }

        // fn(1);


        // 3. 改造有返还值的函数。

        // var fn = function(a,b){
        //     return a + b;
        // }

      

    // 改造方式一
    //    var fn = (a,b)=>{
    //    console.log("hello")
    //     return a + b;
    //    }
    //    console.log(  fn(1,2));
    // 改造方式二 ：  箭头自带return  ，隐式返还.
    // 不要再加大括号了。
    // var fn = (a,b)=>a+b;
    // console.log(  fn(1,2));


    // var fn = v=>v;
    // console.log( fn(3));

    // 避免大括号歧义；

    // var fn = ()=>{name:"张三",age:20};
    
    // 方式一 ：
    // var fn = ()=>{
    //     return {name:"张三",age:20};
    // }

    // console.log( fn());

    // 方式二 ： 通过小括号包裹大括号

    // var fn = ()=>({name:"张三",age:20}); 
    // console.log(fn());

    // setTimeout(() => {
    //     console.log(111); 
    // }, 1000);
    // var arr = ["张三","李四","王五"];
    // var arr3 = arr.map(function(item){
    //     return item+"?"
    // })

    // var arr2 =  arr.map(item=>item+"?");
    // console.log(arr2);
    // console.log(arr3);


    var users = [{
        name:"张三",
        age:20,
        gender:"男"
    },{
        name:"张三2",
        age:26,
        gender:"男"
    },{
        name:"张三3",
        age:19,
        gender:"男"
    },{
        name:"张三4",
        age:20,
        gender:"男"
    },{
        name:"张三5",
        age:24,
        gender:"女"
    },{
        name:"张三6",
        age:23,
        gender:"男"
    }]
    // 需要在用户里筛选 ： 所有的男性 ， 年龄大于20岁 ，名字前加上 名字:张三1

    // 男的筛选
//    var arr2 =  users.filter(item=>item.gender==="男");
//    console.log(arr2);
// //    筛选年龄大于20
//    var arr3 =  arr2.filter(item=>item.age>=20);
//    console.log(arr3);
// //    名字加上内容

// var arr4 = arr3.map(item=>({
//     name:"名字:"+item.name,
//     age:item.age,
//     gender:item.gender
// }))
// console.log(arr4);

  
// 链式调用 pipe  compose
var res =  users.filter(item=>item.gender==="男").filter(item=>item.age>=20).map(item=>({name:"名字:"+item.name,age:item.age,gender:item.gender}));
console.log(res);



    </script>
</body>
</html>